/**
 * @description 用于Promise的错误处理，避免使用try-catch的模式
 * @template T - Promise返回值的类型
 * @param {Promise<T>} promise - 需要处理的Promise
 * @returns {Promise<[Error | null, T | null]>} 返回一个元组，第一个元素为错误对象或null，第二个元素为Promise解析值或null
 * @example
 * const [error, data] = await awitto(fetchData());
 * if (error) {
 *   console.error('请求失败:', error);
 *   return;
 * }
 * console.log('请求成功:', data);
 */
const awitto = async (promise) => {
    try {
        const result = await promise;
        return [null, result];
    }
    catch (error) {
        return [error instanceof Error ? error : new Error(String(error)), null];
    }
};

export { awitto };
